Scroll to navigation

PTX(1) Narzędzia tekstowe GNU 2.0 PTX(1)

NAZWA

ptx - tworzy indeks permutacyjny zawartości pliku

SKŁADNIA

[opcja]... [wejście]... (bez -G)
-G [opcja]... [wejście [wyjście]]

OPIS

Dokumentacja niniejsza nie jest już utrzymywana i może być niedokładna lub niekompletna. Autorytatywnym źródłem jest obecnie dokumentacja Texinfo. Dostęp do niej uzyskasz wpisując w wierszu poleceń:

pinfo ptx
lub
info ptx.

Ta strona podręcznika opisuje polecenie ptx w wersji GNU.

ptx czyta plik tekstowy i tworzy indeks permutacyjny, z każdym słowem kluczowym umieszczonym we własnym kontekście.

Opcja -G (lub równoważna jej --traditional) wyłącza wszystkie rozszerzenia GNU i przywraca tryb tradycyjny, wprowadzając w ten sposób pewne ograniczenia i zmieniając niektóre wartości domyślne opcji programu. Jeżeli nie podano -G, to rozszerzenia GNU są zawsze aktywne. Są one opisane w odpowiednich miejscach tej dokumentacji.

Poszczególne opcje wyjaśniono w dalszych sekcjach.

Przy włączonych rozszerzeniach GNU, po opcjach może wystąpić zero, jeden lub kilka plików. Jeżeli nie podano plików, to program czyta standardowe wejście. Jeżeli podano jakieś pliki wejściowe, to są one czytane naraz tak, jakby były sklejone. Są jednak zupełnie rozdzielone kontekstowo, i, przy żądaniu automatycznego tworzenia odnośników, nazwy plików i numery linii odnoszą się do poszczególnych tekstowych plików wejściowych. We wszystkich przypadkach program tworzy indeks permutacyjny na standardowym wyjściu.

Przy wyłączonych rozszerzeniach GNU, to znaczy, gdy program działa w tradycyjnym trybie pracy, oprócz opcji może istnieć zero, jeden lub dwa parametry.

Jeśli nie ma parametrów, to program czyta standardowe wejście i tworzy indeks permutacyjny na standardowym wyjściu. Jeżeli jest tylko jeden parametr, to określa on nazwę pliku wejściowego, z którego, zamiast ze standardowego wejścia, będzie prowadzony odczyt. Jeżeli podano dwa parametry, to określają one odpowiednio plik wejściowy i tworzony plik wyjściowy. Bądź bardzo ostrożny, gdyż w tym przypadku zawartość pliku podanego jako przez drugi parametr jest niszczona. Zachowanie takie podyktowane jest wyłącznie zgodnością z ptx Systemu V, gdyż Standardy GNU stanowczo odradzają parametry wyjściowe nie poprzedzane opcją.

Zauważ, że jako dowolną z nazw plików wejściowych lub wartość opcji określającej plik można podać pojedynczy myślnik '-'. W takim przypadku przyjmowane jest standardowe wejście. Jednak nie ma sensu używanie tej konwencji więcej niż raz w danym wywołaniu programu.

Argumenty obowiązkowe dla długich opcji są również obowiązkowe dla krótkich opcji.

Opcje ogólne

Wypisuje krótką notę o prawach autorskich i warunkach kopiowania, następnie kończy pracę bez dalszego przetwarzania.
Jak już wyjaśniono, wyłącza wszystkie rozszerzenia GNU ptx i przełącza się na tradycyjny tryb działania.
- nie zaimplementowano -
Wyświetla informację o stosowaniu programu i dostępnych opcjach, kończy pracę.
Wyświetla numer wersji programu i kończy pracę.

Wybór zestawu znaków

Przy obecnej konfiguracji, program zakłada, że plik jest zakodowany przy zastosowaniu 8-bitowego ISO 8859-1, zwanego też zestawem znaków Latin-1, chyba że zostanie skompilowany dla MS-DOS, wówczas używa zestawu IBM-PC. (Nic nie wiadomo o tym, by GNU ptx nadal działał na mniejszych maszynach MS-DOS.) W porównaniu z 7-bitowym ASCII, zestaw znaków będących literami jest więc inny. Fakt ten zmienia zachowanie dopasowywania wyrażeń regularnych. Stąd też, domyślne wyrażenie regularne dla słowa kluczowego dopuszcza akcentowane litery i litery spoza alfabetu angielskiego. Sortowanie słów kluczowych jest jednak nadal niewykończone; przestrzega ślepo odnośnego uporządkowania zestawu znaków.

Do celów sortowania zamienia małe litery na duże.

Wybór słów i przetwarzanie wejścia

Zapewnia alternatywny (do -W) sposób opisywania, jakie znaki tworzą słowa. Podany w tej opcji plik zawiera listę znaków, które nie mogą być częścią jednego słowa. Plik ten zwany jest "plikiem podziału" ("Break file"). Każdy ze znaków nie będący częścią pliku podziału jest składową słów. Jeżeli podano obie opcje: -b i -W, to -W ma pierwszeństwo a -b jest ignorowana.

Przy włączonych rozszerzeniach GNU jedynym sposobem uniknięcia interpretacji znaku nowej linii jako znaku podziału jest zapisanie wszystkich znaków podziału w pliku nie zawierającym w ogóle znaku nowej linii, nawet na końcu. Przy wyłączonych rozszerzeniach GNU spacje, tabulacje i znaki nowej linii zawsze uważane są za znaki podziału, nawet jeśli nie ma ich w pliku podziału.

Plik związany z tą opcją zawiera listę słów, które nigdy nie powinny być brane jako słowa kluczowe w skorowidzu wyjściowym. Zwany jest "plikiem pomijania" ("Ignore file"). Zawiera w każdej linii dokładnie jedno słowo. Koniec linii rozdzielającej słowa nie podlega opcji -S.

Istnieje domyślny plik pomijania używany przez ptx, gdy nie podano niniejszej opcji, zwykle w /usr/local/lib/eign, jeśli nie zmieniono tego podczas instalacji. Chcąc deaktywować domyślny plik pomijania należy podać plik /dev/null.

Plik związany z tą opcją zawiera listę słów, które pozostaną w skorowidzu wyjściowym. Każde słowo nie ujęte w tym pliku jest pomijane. Plik zwany jest "plikiem wyłączności" (Only file"). Zawiera po jednym słowie w każdej linii. Koniec linii rozdzielającej słowa nie podlega opcji -S.

Dla pliku wyłączności nie ma ustawienia domyślnego. W przypadku wystąpienia zarówno pliku pomijania jak i pliku wyłączności słowo uważane jest za kluczowe tylko wtedy, gdy podano je w pliku wyłączności a nie podano w pliku pomijania.

W każdej linii wejściowej początkowa sekwencja nie-białych znaków zostanie przyjęta za odnośnik, którego celem jest identyfikacja tej linii w utworzonym indeksie permutacyjnym. Więcej na temat tworzenia odnośników znajdziesz w sekcji Formatowanie wyników ptx. Użycie tej opcji zmienia domyślną wartość opcji -S.

Przy wykorzystaniu opcji -r program nie próbuje zbyt usilnie usuwać odnośników z kontekstów wyjścia, ale udaje mu się to poprawnie jeśli kontekst kończy się dokładnie na znaku nowej linii. Jeżeli opcji tej użyto z domyślną wartością opcji -S, lub jeśli wyłączone są rozszerzenia GNU, warunek ten jest zawsze spełniony. Odnośniki są wówczas całkowicie wykluczone z kontekstów wynikowych.

Określa, jakie wyrażenie regularne będzie opisywać koniec linii lub koniec zdania. W rzeczywistości istnieje inne rozróżnienie pomiędzy końcami linii czy końcami zdań niż wynik tego wyrażenia regularnego, a granice linii wejściowych nie mają żadnego specjalnego znaczenia poza tą opcją. Domyślnie, gdy włączone są rozszerzenia GNU, a nie jest używana opcja -r, używane są końce zdań. W tym przypadku używane jest dokładne regexp zapożyczone z GNU emacsa:

[.?!][]\"')}]*\($\\|\t\\| \\)[ \t\n]*
Gdy wyłączone są rozszerzenia GNU lub użyta opcja -r, używane są końce linii. W tym przypadku, domyślnym wyrażeniem regularnym jest po prostu:

\n
Zastosowanie pustego regexp jest równoważne całkowitemu wyłączeniu rozpoznawania końca linii lub końca zdania. Cały plik jest wówczas traktowany jak jedna długa linia lub zdanie. Użytkownik może również zakazać generowania wszystkich flag obcinania, korzystając z opcji -F "".

Gdy słowa kluczowe trafiają się blisko początku zdania lub linii wejściowej, często tworzy to niewykorzystany obszar na początku wynikowej linii kontekstu. Gdy słowa kluczowe są blisko końca zdania lub linii wejściowej, często tworzy to niewykorzystany obszar na końcu wynikowej linii. Program usiłuje wypełnić te obszary zawijając kontekst w ich wnętrzu. Końcówka zdania (linii wejściowej) używana jest do wypełnienia niewykorzystanego obszaru po lewej stronie linii wynikowej, początek używany jest do wypełnienia obszaru po prawej.

Dla wygody użytkownika rozpoznawanych jest wiele zwyczajowych sekwencji specjalnych (poprzedzanych odwrotnym ukośnikiem), jakie występują w C. Są one przekształcane na odpowiadające im znaki przez sam ptx.

Określa, jakie wyrażenie regularne będzie opisywać każde ze słów kluczowych. Domyślnie, jeśli włączone są rozszerzenia GNU, słowo jest sekwencją liter: używanym regexp jest '\w+'. Gdy rozszerzenia GNU są wyłączone, słowem jest domyślnie wszystko kończące się spacją, tabulacją lub znakiem nowej linii: używanym regexp jest '[^ \t\n]+'.

Puste wyrażenie regularne jest równoważne nie podaniu tej opcji, pozwalając zadziałać domyślnemu.

Dla wygody użytkownika rozpoznawanych jest wiele zwyczajowych sekwencji specjalnych (poprzedzanych odwrotnym ukośnikiem), jakie występują w C. Są one przekształcane na odpowiadające im znaki przez sam ptx.

Formatowanie wyników

Format wynikowy jest sterowany głównie opcjami -O i -T, opisanych poniżej. Jeżeli nie wybrano ani opcji -O ani -T, a włączone są rozszerzenia GNU, to program wybiera format wyjściowy odpowiedni dla terminala uproszczonego. Każde wystąpienie słowa kluczowego wypisywane jest na środku jednej linii, otoczone przez swój lewy i prawy kontekst. Pola są poprawnie wyrównywane, więc skorowidz wynikowy można z łatwością studiować. Jeżeli wybrano automatyczne odnośniki opcją -A i są one wypisane przed lewym kontekstem, to jest, jeżeli nie wybrano opcji -R, to po odnośniku dodawany jest dwukropek. Ładnie współpracuje to z przetwarzaniem przez GNU Emacsa 'next-error'. W tym domyślnym formacie wyjściowym, każdy biały znak, jak znak nowej linii czy tabulacja, jest po prostu zamieniany na dokładnie jedną spację, bez specjalnych prób kompresowania ciągu kolejnych spacji. W przyszłości może się to zmienić. Za wyjątkiem białych znaków, każdy inny znak odnośnego zestawu 256 znaków przekazywany jest dosłownie.

Format wyjściowy sterowany jest dodatkowo poniższymi opcjami.

Określa rozmiar minimalnej przerwy pomiędzy polami w linii wyjściowej.
Określa maksymalną szerokość każdej ostatecznej linii wyjścia. Jeżeli stosowane są odnośniki, to są one ujęte lub nie ujęte w tej szerokości w zależności od wartości opcji -R. Jeżeli nie użyto tej opcji, to znaczy, gdy odnośniki wypisywane są przed lewym kontekstem, maksymalna szerokość wyjścia bierze pod uwagę maksymalną długość wszystkich odnośników. Jeżeli użyto opcji -R, to znaczy, gdy odnośniki wypisywane są po prawym kontekście, maksymalna szerokość nie uwzględnia miejsca zajętego przez odnośniki ani przerw, które je poprzedzają.
Tworzy automatyczne odnośniki. Każda linia wejściowa będzie posiadać automatyczny odnośnik utworzony z nazwy pliku i liczby porządkowej linii, z pojedynczym dwukropkiem między nimi. Jednak nazwa pliku będzie pusta, jeśli odczytywane jest standardowe wejście. Jeżeli podano zarówno opcję -A jak i -r, to wejściowy odnośnik jest nadal czytany i przeskakiwany, ale podczas wypisywania wyników używany jest automatyczny odnośnik, przesłaniając wejściowy odnośnik.
W domyślnym formacie wyjściowym, gdy nie jest używana opcja -R, każdy odnośnik utworzony w wyniku opcji -r lub -A podawany jest w skrajnej prawej części linii wyjściowej, po prawym kontekście. W domyślnym formacie wyjściowym, przy podanej opcji -R, odnośniki są natomiast podawane na początku linii wyjściowej, przed lewym kontekstem. W każdym innym formacie wyjściowym opcja -R jest niemal ignorowana, z wyjątkiem tego, że szerokość odnośników nie jest wówczas jest wliczana do całkowitej szerokości wyjścia podanej przez -w.

Opcja ta jest wybierana automatycznie przy wyłączeniu rozszerzeń GNU.

Żąda, by każde obcięcie w wyjściu było zgłoszone za pomocą łańcucha. Większość pól wynikowych teoretycznie rozciąga się w stronę początku lub końca bieżącej linii, lub bieżącego zdania, jak ustalono opcją -S. Istnieje jednak maksymalna dozwolona szerokość linii wyjściowej, zmieniana opcją -w, która jest następnie dzielona na części dla różnych pól wyjściowych. Jeżeli pole nie może się rozciągać aż do początku lub końca bieżącej linii i mieścić w zadanej szerokości, wówczas następuje obcięcie. Domyślnie łańcuchem oznaczający obcięcie jest pojedynczy ukośnik, jak w '-F /'.

łańcuch może mieć więcej niż jeden znak, jak w '-F ...'. W szczególnym przypadku, gdy łańcuch jest pusty ('-F ""'), oznaczanie obcięcia jest wyłączane. Nie są wówczas dołączane żadne znaczniki obcięcia.

Dla wygody użytkownika rozpoznawanych jest wiele zwyczajowych sekwencji specjalnych (poprzedzanych odwrotnym ukośnikiem), jakie występują w C. Są one przekształcane na odpowiadające im znaki przez sam ptx.

Określa inny łańcuch, jaki ma być stosowany zamiast 'xx' przy tworzeniu wyjścia odpowiedniego dla nroff, troff lub TeX.
Wybiera format wyjściowy odpowiedni dla przetwarzania przez nroff lub troff. Linie wyjściowe są typu:
    
więc możliwe będzie napisanie makra '.xx' roff-a do obsługi składu otrzymanego wyjścia. Jest to domyślny format wyjścia, gdy wyłączone są rozszerzenia GNU. Opcją -M można zmienić 'xx' na inną nazwę makra.

W tym formacie każdy znak nie-graficzny, jak znak nowej linii czy tabulacja, jest po prostu zamieniany na dokładnie jedną spację, bez specjalnych prób kompresowania ciągu kolejnych spacji. Wszystkie znaki cytowania: `"' są podwajane, by zostały poprawnie przetworzone przez nroff czy troff.

Wybiera format wyjściowy odpowiedni dla przetwarzania przez TeX. Linie wyjściowe są typu:
\xx {KOŃC}{PRZED}{SŁOWOKLUCZ}{PO}{POCZ}{ODNOŚNIK}
    
więc możliwe będzie napisanie definicji '\xx' do obsługi składu otrzymanego wyjścia. Zauważ, że gdy nie są tworzone odnośniki, to znaczy, gdy nie użyto ani opcji -A ani -r, nie pojawia się ostatni parametr każdego wywołania '\xx'. Opcją -M można zmienić 'xx' na inną nazwę makra.

W tym formacie niektóre znaki specjalne, jak '$','%', '&' poprzedzenie ich odwrotnym ukośnikiem. Nawiasy klamrowe '{','}' też są chronione w ten sposób, ale również ujęte między parę znaków dolara, by wymusić tryb matematyczny. Sam odwrotny ukośnik generuje sekwencję '\backslash{}'. Daszki (circumflex) i tyldy nad literami generują odpowiednio sekwencje '^\{ }' i '~\{ }'. Inne znaki diakrytyczne w odnośnym zestawie znaków dają odpowiednie sekwencje TeX-a, na ile jest to możliwe. Inne znaki nie-graficzne, jak znak nowej linii, i tabulacja, i wszystkie inne znaki nie będące częścią ASCII, są po prostu zamieniane na dokładnie jedną spację, bez specjalnych prób kompresowania ciągu kolejnych spacji. Proszę dać znać autorowi jak ulepszyć przetwarzanie tych znaków specjalnych dla TeX-a.

Rozszerzenia GNU

Ta wersja ptx zawiera kilka cech nieistniejących w ptx z Systemu V. Można je wyeliminować przy pomocy opcji -G linii poleceń, chyba że zostanie ona przesłonięta przez inne opcje. Niektóre rozszerzenia nie mogą być przywrócone przez przesłonięcie, zatem prostą zasadą jest unikanie -G jeżeli chce się korzystać z rozszerzeń GNU. Poniżej podano różnice pomiędzy tym programem a ptx z Systemu V.

*
Niniejszy program potrafi czytać wiele plików wejściowych naraz, zawsze zapisuje powstały skorowidz na standardowe wyjście. Z drugiej strony, ptx z System V czyta tylko jeden plik i tworzy wynik na standardowym wyjściu lub, jeśli w wywołaniu polecenia podano drugi parametr plik, w zadanym pliku.

Posługiwanie się parametrami wyjścia nie poprzedzonymi opcjami jest dość niebezpieczną praktyką, której GNU w miarę możliwości unika. Zatem, przy posługiwaniu się ptx przenośnie między GNU a System V, powinno się zwracać uwagę, by zawsze używać go z jednym plikiem wejściowym i zawsze oczekiwać wyniku na standardowym wyjściu. Można również automatycznie skonfigurować wywoływania ptx z opcją -G w produktach go używających, jeśli konfigurator zauważy, że instalowany ptx akceptuje -G.

*
Jedynymi opcjami dostępnymi w ptx z System V są '-b', '-f', '-g', '-i', '-o', '-r', '-t' i '-w'. Wszystkie inne opcje są rozszerzeniami GNU i nie są powtórzone w tym wyliczeniu. Ponadto, niektóre opcje mają nieco inne znaczenie przy włączonych rozszerzeniach GNU, jak wyjaśniono poniżej.
*
Domyślnie, skorowidz wyjściowy nie jest sformatowany dla 'troff' czy 'nroff'. Zamiast tego sformatowany jest dla terminala uproszczonego. Wyjście dla 'troff' lub 'nroff' można wybrać opcją -O.
*
Dopóki nie użyto opcji -R maksymalna szerokość odnośników jest odejmowana od całkowitej szerokości linii wyjściowej. Przy wyłączonych rozszerzeniach GNU, szerokość odnośników nie jest uwzględniana w obliczeniach szerokości linii wyjściowej.
*
Czytane i przetwarzane z pliku wejściowego są zawsze wszystkie z 256 znaków zestawu, nawet znaki NUL, bez niepoprawnego efektu, nawet gdy rozszerzenia GNU są wyłączone. Jednak ptx z Systemu V nie przyjmuje 8-bitowych znaków, odrzucanych jest kilka znaków sterujących, a tylda '~' jest potępiona.
*
Długość linii wejściowej jest ograniczona tylko dostępną pamięcią, nawet przy wyłączonych rozszerzeniach GNU. Jednak ptx z Systemu V przetwarza tylko 200 pierwszych znaków linii.
*
Domyślnymi znakami podziału (nie-słowami) są wszystkie znaki oprócz liter odnośnego zestawu znaków, diakrytycznych lub nie. Przy wyłączonych rozszerzeniach GNU domyślnymi znakami podziału są wyłącznie spacja, tabulacja i znak nowej linii.
*
Program lepiej posługuje się szerokością linii wyjściowej. Jeżeli wyłączono rozszerzenia GNU, program próbuje zamiast tego imitować ptx z System V, ale istnieje kilka niewielkich zakłóceń, których niniejszy program całkowicie nie powiela.
*
Użytkownik może podać równocześnie plik pomijania i plik wyłączności. W ptx z System V nie jest to dozwolone.

ZGŁASZANIE BŁĘDÓW

Błędy proszę zgłaszać, w jęz. ang., do <bug-textutils@gnu.org>.

COPYRIGHT

Copyright © 1999 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ZOBACZ TAKŻE

sort(1), uniq(1), comm(1), tsort(1), textutils(1).

OD TŁUMACZA

Zaktualizowano i poszerzono wg dokumentacji Texinfo dla narzędzi tekstowych GNU wersji 2.0.

FSF sierpień 1999